package tv.cofe

import java.io.{
	InputStream => IStream,
	InputStreamReader=>ISReaded,
	BufferedReader =>BReader,
	OutputStream => OStream
};
import java.nio.charset.Charset;

object InputStream
{
	class InputStreamExtension (val is:IStream) {
		/**
		 * Читает текст из потока, до конца
		 * @param cs - Кодировка текста
		 * @return Декодированный текст
		 */
		def readText(cs:Charset):String = {
			val res = new StringBuilder();
			val isr = new ISReaded( is, cs );
			val br = new BReader( isr );
			val buff = new Array[Char](1024);
			var stop = false;
			while( !stop ){
				val readed = br.read(buff);
				if( readed<0 ){
					stop = true;
				}else{
					if( readed>0 )res.append(buff,0,readed);
				}
			}
			res.toString;
		}

		/**
		 * Читает текст из потока, до конца
		 * @param cs - Кодировка текста
		 * @return Декодированный текст
		 */
		def readText( cs:String ):String = readText( Charset.forName(cs) );

		/**
		 * Читает текст из потока, до конца. Исползуется кодировка по умолчанию.
		 * @return Декодированный текст
		 */
		def readText():String = readText( Charset.defaultCharset );
	}

	implicit def extendInputStream( is:IStream ):InputStreamExtension = new InputStreamExtension( is );
}